package com.tvunetworks.center.device.service;

import com.tvunetworks.center.device.model.vo.PidPortMappingVo;

import java.util.Map;

/**
 * @author Etan Yang
 * @create: 2021/10/13 15:27
 */

public interface PidPortMappingService {
    /**
     * 初始化tvu_device到t_pid_port_mapping，条件是type=R，且有IP
     */
    void initDeviceExistIpToPidPortMapping();


    /**
     * 删除pidPortMapping中的全部数据
     * @return int
     */
    int deletePidPortMapping();

    /**
     * 将t_pid_port_mapping表中的在线或live且domain为空的设备获取对应的domain并更新对应的domain
     * @return map，key为SUCCESS，对应的value为成功的个数，key为FAILED，对应的value为失败个数，key为FailedPeerId，对应的value为失败的pid集合
     */
    Map<String, String> initOnlineOrLiveReceiverDomainToPidPortMapping();

    /**
     * 当receiver的状态发生改变时，进入该方法
     * @param message 上报的信息
     *  返回ip是否改变，true表示ip改变了，false表示ip没有改变
     */
    void receiverStatusChanged(String message);


    /**
     * 刷新数据库中的数据到cache中
     */
    void refreshPirPortMappingCache();

    /**
     * 将peerId的ip和域名进行DNS解析
     * @param peerId 设备id
     * @param email 用户邮箱
     */
    void refreshIpAndDomain(String peerId, String email);

    /**
     * 根据peerId获取PidPortMapping
     * @param peerId 设备id
     * @return 返回结果
     */
    PidPortMappingVo getByPeerId(String peerId);
}
